\hypertarget{gameengine_8h}{
\section{gameengine.h File Reference}
\label{gameengine_8h}\index{gameengine.h@{gameengine.h}}
}
{\ttfamily \#include \char`\"{}defines.h\char`\"{}}\par
{\ttfamily \#include \char`\"{}gameobject.h\char`\"{}}\par
{\ttfamily \#include \char`\"{}spacecraft.h\char`\"{}}\par
{\ttfamily \#include \char`\"{}frameinfo.h\char`\"{}}\par
{\ttfamily \#include \char`\"{}gameeffect.h\char`\"{}}\par
{\ttfamily \#include \char`\"{}gamelevel.h\char`\"{}}\par
{\ttfamily \#include $<$QList$>$}\par
{\ttfamily \#include $<$QQueue$>$}\par
{\ttfamily \#include $<$QGLWidget$>$}\par
{\ttfamily \#include $<$math.h$>$}\par
{\ttfamily \#include $<$stdlib.h$>$}\par
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct_statistics}{Statistics}
\begin{DoxyCompactList}\small\item\em A structure for storing statistics information about game objects and particle effects. \item\end{DoxyCompactList}\item 
struct \hyperlink{struct_game_object_start_parameters}{GameObjectStartParameters}
\begin{DoxyCompactList}\small\item\em Structure for storing start parameters for game objects. \item\end{DoxyCompactList}\item 
class \hyperlink{class_game_engine}{GameEngine}
\begin{DoxyCompactList}\small\item\em The {\ttfamily \hyperlink{class_game_engine}{GameEngine}} class contains the main game loop and all the necessary methods to keep up the actual gameplay. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089f}{GameObjectStartMode} \{ \hyperlink{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089fa1c8d564866618063339d8e69ffa81db3}{HorizontalDirection}, 
\hyperlink{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089fa44a83d520a8880abea89b5dad0eb2dc3}{VerticalDirection}, 
\hyperlink{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089faa73a835a752bc91ce1fc2f06a35b20f5}{AnyDirection}
 \}
\begin{DoxyCompactList}\small\item\em Start mode direction for a game object. \item\end{DoxyCompactList}\item 
enum \{ \hyperlink{gameengine_8h_a0411cd49bb5b71852cecd93bcbf0ca2da0b5e0d17208d3ff639a07e9bc1894303}{MinersAtStartup} =  5
 \}
\item 
enum \{ \hyperlink{gameengine_8h_abed82baf7f470b522273a3e37c24c600aad610897527719d38e153b3b703a9e32}{BombsAtStartup} =  0
 \}
\item 
enum \{ \hyperlink{gameengine_8h_ab04a0655cd1e3bcac5e8f48c18df1a57aa384f6a4b21c4cd21f9157b664dda3df}{HyperjumpsAtStartup} =  0
 \}
\item 
enum \hyperlink{gameengine_8h_a9432afd229150807383041ba2020733f}{ProgressValues} \{ \hyperlink{gameengine_8h_a9432afd229150807383041ba2020733fa9989484db04bba31fb63e75816543ada}{ProgressLargeAsteroid} =  16, 
\hyperlink{gameengine_8h_a9432afd229150807383041ba2020733faed1bfe9350ea55936d6ad9baff0422cb}{ProgressMediumAsteroid} =  5, 
\hyperlink{gameengine_8h_a9432afd229150807383041ba2020733fac2864a655c8be195f648116cbf8e6229}{ProgressOther} =  1
 \}
\begin{DoxyCompactList}\small\item\em The progress value gained by destroying a game object or by collecting an item. \item\end{DoxyCompactList}\item 
enum \hyperlink{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dd}{PotentialObjects} \{ \hyperlink{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dda92c257f9553db822fdd489a3abc17210}{PotentialObjectsLargeAsteroid} =  12, 
\hyperlink{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dda5c66772d5efa938b38bc78deabc33616}{PotentialObjectsMediumAsteroid} =  4, 
\hyperlink{gameengine_8h_a4649de13b8584c543be1a6c2c99c57ddaa7ffc5042e0b920c4cd07c262679e3a4}{PotentialObjectsOther} =  1
 \}
\begin{DoxyCompactList}\small\item\em Amount of potential objects appended to game level as a result of adding a game object of certain type. \item\end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}


\subsection{Enumeration Type Documentation}
\hypertarget{gameengine_8h_a0411cd49bb5b71852cecd93bcbf0ca2d}{
\subsubsection[{"@7}]{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}}
\label{gameengine_8h_a0411cd49bb5b71852cecd93bcbf0ca2d}
\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{MinersAtStartup@{MinersAtStartup}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!MinersAtStartup@{MinersAtStartup}}\item[{\em 
\hypertarget{gameengine_8h_a0411cd49bb5b71852cecd93bcbf0ca2da0b5e0d17208d3ff639a07e9bc1894303}{
MinersAtStartup}
\label{gameengine_8h_a0411cd49bb5b71852cecd93bcbf0ca2da0b5e0d17208d3ff639a07e9bc1894303}
}]Amount of miners at the game start. \end{description}
\end{Desc}

\hypertarget{gameengine_8h_abed82baf7f470b522273a3e37c24c600}{
\subsubsection[{"@8}]{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}}
\label{gameengine_8h_abed82baf7f470b522273a3e37c24c600}
\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{BombsAtStartup@{BombsAtStartup}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!BombsAtStartup@{BombsAtStartup}}\item[{\em 
\hypertarget{gameengine_8h_abed82baf7f470b522273a3e37c24c600aad610897527719d38e153b3b703a9e32}{
BombsAtStartup}
\label{gameengine_8h_abed82baf7f470b522273a3e37c24c600aad610897527719d38e153b3b703a9e32}
}]Amount of boms at the game start. \end{description}
\end{Desc}

\hypertarget{gameengine_8h_ab04a0655cd1e3bcac5e8f48c18df1a57}{
\subsubsection[{"@9}]{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}}
\label{gameengine_8h_ab04a0655cd1e3bcac5e8f48c18df1a57}
\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{HyperjumpsAtStartup@{HyperjumpsAtStartup}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!HyperjumpsAtStartup@{HyperjumpsAtStartup}}\item[{\em 
\hypertarget{gameengine_8h_ab04a0655cd1e3bcac5e8f48c18df1a57aa384f6a4b21c4cd21f9157b664dda3df}{
HyperjumpsAtStartup}
\label{gameengine_8h_ab04a0655cd1e3bcac5e8f48c18df1a57aa384f6a4b21c4cd21f9157b664dda3df}
}]Amount of hyper jumps at the game start. \end{description}
\end{Desc}

\hypertarget{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089f}{
\index{gameengine.h@{gameengine.h}!GameObjectStartMode@{GameObjectStartMode}}
\index{GameObjectStartMode@{GameObjectStartMode}!gameengine.h@{gameengine.h}}
\subsubsection[{GameObjectStartMode}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf GameObjectStartMode}}}
\label{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089f}


Start mode direction for a game object. 

\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{HorizontalDirection@{HorizontalDirection}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!HorizontalDirection@{HorizontalDirection}}\item[{\em 
\hypertarget{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089fa1c8d564866618063339d8e69ffa81db3}{
HorizontalDirection}
\label{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089fa1c8d564866618063339d8e69ffa81db3}
}]Horizontal direction. \index{VerticalDirection@{VerticalDirection}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!VerticalDirection@{VerticalDirection}}\item[{\em 
\hypertarget{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089fa44a83d520a8880abea89b5dad0eb2dc3}{
VerticalDirection}
\label{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089fa44a83d520a8880abea89b5dad0eb2dc3}
}]Vertical direction. \index{AnyDirection@{AnyDirection}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!AnyDirection@{AnyDirection}}\item[{\em 
\hypertarget{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089faa73a835a752bc91ce1fc2f06a35b20f5}{
AnyDirection}
\label{gameengine_8h_a622f68cdaded1ddf85ccecb9cfed089faa73a835a752bc91ce1fc2f06a35b20f5}
}]Any direction. \end{description}
\end{Desc}

\hypertarget{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dd}{
\index{gameengine.h@{gameengine.h}!PotentialObjects@{PotentialObjects}}
\index{PotentialObjects@{PotentialObjects}!gameengine.h@{gameengine.h}}
\subsubsection[{PotentialObjects}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf PotentialObjects}}}
\label{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dd}


Amount of potential objects appended to game level as a result of adding a game object of certain type. 

E.g. large asteroids splits into three medium sized asteroid and each medium sized asteroid results four minerals: $1 * 3 * 4 = 12$

\begin{DoxySeeAlso}{See also}
\hyperlink{class_game_engine}{GameEngine} 
\end{DoxySeeAlso}
\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{PotentialObjectsLargeAsteroid@{PotentialObjectsLargeAsteroid}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!PotentialObjectsLargeAsteroid@{PotentialObjectsLargeAsteroid}}\item[{\em 
\hypertarget{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dda92c257f9553db822fdd489a3abc17210}{
PotentialObjectsLargeAsteroid}
\label{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dda92c257f9553db822fdd489a3abc17210}
}]Potential amount of resulting objects after adding one large asteroid to game. \index{PotentialObjectsMediumAsteroid@{PotentialObjectsMediumAsteroid}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!PotentialObjectsMediumAsteroid@{PotentialObjectsMediumAsteroid}}\item[{\em 
\hypertarget{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dda5c66772d5efa938b38bc78deabc33616}{
PotentialObjectsMediumAsteroid}
\label{gameengine_8h_a4649de13b8584c543be1a6c2c99c57dda5c66772d5efa938b38bc78deabc33616}
}]Potential amount of resulting objects after adding one medium sized asteroid to game. \index{PotentialObjectsOther@{PotentialObjectsOther}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!PotentialObjectsOther@{PotentialObjectsOther}}\item[{\em 
\hypertarget{gameengine_8h_a4649de13b8584c543be1a6c2c99c57ddaa7ffc5042e0b920c4cd07c262679e3a4}{
PotentialObjectsOther}
\label{gameengine_8h_a4649de13b8584c543be1a6c2c99c57ddaa7ffc5042e0b920c4cd07c262679e3a4}
}]Potential amount of resulting objects after adding other game object than asteroid to game. \end{description}
\end{Desc}

\hypertarget{gameengine_8h_a9432afd229150807383041ba2020733f}{
\index{gameengine.h@{gameengine.h}!ProgressValues@{ProgressValues}}
\index{ProgressValues@{ProgressValues}!gameengine.h@{gameengine.h}}
\subsubsection[{ProgressValues}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf ProgressValues}}}
\label{gameengine_8h_a9432afd229150807383041ba2020733f}


The progress value gained by destroying a game object or by collecting an item. 

Level progress is used to check the objectives of a level and to bring more game objects to screen. \begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{ProgressLargeAsteroid@{ProgressLargeAsteroid}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!ProgressLargeAsteroid@{ProgressLargeAsteroid}}\item[{\em 
\hypertarget{gameengine_8h_a9432afd229150807383041ba2020733fa9989484db04bba31fb63e75816543ada}{
ProgressLargeAsteroid}
\label{gameengine_8h_a9432afd229150807383041ba2020733fa9989484db04bba31fb63e75816543ada}
}]Progress value for destroying a large asteroid with a bomb. 1 large asteroid + 3 $\ast$ (1 medium sized asteroid + 4 minerals) = 16 progress points. \index{ProgressMediumAsteroid@{ProgressMediumAsteroid}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!ProgressMediumAsteroid@{ProgressMediumAsteroid}}\item[{\em 
\hypertarget{gameengine_8h_a9432afd229150807383041ba2020733faed1bfe9350ea55936d6ad9baff0422cb}{
ProgressMediumAsteroid}
\label{gameengine_8h_a9432afd229150807383041ba2020733faed1bfe9350ea55936d6ad9baff0422cb}
}]Progress value for destroying a medium asteroid with a bomb. 1 medium sized asteroid + 4 minerals = 5 progress points. \index{ProgressOther@{ProgressOther}!gameengine.h@{gameengine.h}}\index{gameengine.h@{gameengine.h}!ProgressOther@{ProgressOther}}\item[{\em 
\hypertarget{gameengine_8h_a9432afd229150807383041ba2020733fac2864a655c8be195f648116cbf8e6229}{
ProgressOther}
\label{gameengine_8h_a9432afd229150807383041ba2020733fac2864a655c8be195f648116cbf8e6229}
}]Progress value used to increment the progress when
\begin{DoxyItemize}
\item collectible
\begin{DoxyItemize}
\item is collected
\item expires,
\item is destoyed with a bomb
\end{DoxyItemize}
\item asteroid is split 
\end{DoxyItemize}\end{description}
\end{Desc}

